# Author: Stephen Situ
# In This exercise, I connect to an IBM DB2 cloud database and use SQL alchemy to preform advanced sql queries. This includes:
# Aggragate Functions, LIMIT, DISTINCT, LIKE, ORDER BY, GROUP BY, GROUPING SETS, HAVING, PARTITION BY, CASE, CREATE TABLE,
# ALTER TABLE, INSERT INTO, UPDATE, DROP TABLE, Subqueries, VIEW, WITH CTE, TEMP TABLE, STORED PROCEDURES, JOINS, UNION.
import ibm_db
import ibm_db_sa
import sqlalchemy
%load_ext sql
%sql ibm_db_sa://gmv60736:vBlsVJ3UzuclM6c1@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL
# Return full Census table
%%sql
SELECT *
FROM CENSUS
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_number | community_area_name | percent_of_housing_crowded | percent_households_below_poverty | percent_aged_16__unemployed | percent_aged_25__without_high_school_diploma | percent_aged_under_18_or_over_64 | per_capita_income | hardship_index |
|---|---|---|---|---|---|---|---|---|
| 1 | Rogers Park | 7.7 | 23.6 | 8.7 | 18.2 | 27.5 | 23939 | 39 |
| 2 | West Ridge | 7.8 | 17.2 | 8.8 | 20.8 | 38.5 | 23040 | 46 |
| 3 | Uptown | 3.8 | 24.0 | 8.9 | 11.8 | 22.2 | 35787 | 20 |
| 4 | Lincoln Square | 3.4 | 10.9 | 8.2 | 13.4 | 25.5 | 37524 | 17 |
| 5 | North Center | 0.3 | 7.5 | 5.2 | 4.5 | 26.2 | 57123 | 6 |
| 6 | Lake View | 1.1 | 11.4 | 4.7 | 2.6 | 17.0 | 60058 | 5 |
| 7 | Lincoln Park | 0.8 | 12.3 | 5.1 | 3.6 | 21.5 | 71551 | 2 |
| 8 | Near North Side | 1.9 | 12.9 | 7.0 | 2.5 | 22.6 | 88669 | 1 |
| 9 | Edison Park | 1.1 | 3.3 | 6.5 | 7.4 | 35.3 | 40959 | 8 |
| 10 | Norwood Park | 2.0 | 5.4 | 9.0 | 11.5 | 39.5 | 32875 | 21 |
# AGGRAGATE FUNCTIONS - AVG, COUNT, MAX, MIN return single value based on column values
%%sql
SELECT AVG(per_capita_income) AS avg_income
FROM CENSUS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| avg_income |
|---|
| 25597 |
# LIMIT- limits result output
%%sql
SELECT *
FROM CENSUS
LIMIT 3
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_number | community_area_name | percent_of_housing_crowded | percent_households_below_poverty | percent_aged_16__unemployed | percent_aged_25__without_high_school_diploma | percent_aged_under_18_or_over_64 | per_capita_income | hardship_index |
|---|---|---|---|---|---|---|---|---|
| 1 | Rogers Park | 7.7 | 23.6 | 8.7 | 18.2 | 27.5 | 23939 | 39 |
| 2 | West Ridge | 7.8 | 17.2 | 8.8 | 20.8 | 38.5 | 23040 | 46 |
| 3 | Uptown | 3.8 | 24.0 | 8.9 | 11.8 | 22.2 | 35787 | 20 |
# DISTINCT - returns only unique values of a column
%%sql
SELECT DISTINCT community_area_name
FROM CENSUS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_name |
|---|
| Albany Park |
| Archer Heights |
| Armour Square |
| Ashburn |
| Auburn Gresham |
| Austin |
| Avalon Park |
| Avondale |
| Belmont Cragin |
| Beverly |
| Bridgeport |
| Brighton Park |
| Burnside |
| CHICAGO |
| Calumet Heights |
| Chatham |
| Chicago Lawn |
| Clearing |
| Douglas |
| Dunning |
| East Garfield Park |
| East Side |
| Edgewater |
| Edison Park |
| Englewood |
| Forest Glen |
| Fuller Park |
| Gage Park |
| Garfield Ridge |
| Grand Boulevard |
| Greater Grand Crossing |
| Hegewisch |
| Hermosa |
| Humboldt park |
| Hyde Park |
| Irving Park |
| Jefferson Park |
| Kenwood |
| Lake View |
| Lincoln Park |
| Lincoln Square |
| Logan Square |
| Loop |
| Lower West Side |
| McKinley Park |
| Montclaire |
| Morgan Park |
| Mount Greenwood |
| Near North Side |
| Near South Side |
| Near West Side |
| New City |
| North Center |
| North Lawndale |
| North Park |
| Norwood Park |
| O'Hare |
| Oakland |
| Portage Park |
| Pullman |
| Riverdale |
| Rogers Park |
| Roseland |
| South Chicago |
| South Deering |
| South Lawndale |
| South Shore |
| Uptown |
| Washington Height |
| Washington Park |
| West Elsdon |
| West Englewood |
| West Garfield Park |
| West Lawn |
| West Pullman |
| West Ridge |
| West Town |
| Woodlawn |
# Count Distinct values for column
%%sql
SELECT COUNT(DISTINCT community_area_name)
FROM CENSUS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| 1 |
|---|
| 78 |
# Use LiKE command to filter strings
%%sql
SELECT community_area_name
FROM CENSUS
WHERE community_area_name LIKE 'Burn%';
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_name |
|---|
| Burnside |
# Use ORDER BY clause to sort
%%sql
SELECT per_capita_income
FROM CENSUS
ORDER BY per_capita_income DESC
LIMIT 5
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| per_capita_income |
|---|
| 88669 |
| 71551 |
| 65526 |
| 60058 |
| 59077 |
# Use GROUP BY clause to group a column with aggragate functions
%%sql
SELECT community_area_name, AVG(per_capita_income) AS avg_income
FROM CENSUS
GROUP BY community_area_name
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_name | avg_income |
|---|---|
| Albany Park | 21323 |
| Archer Heights | 16134 |
| Armour Square | 16148 |
| Ashburn | 23482 |
| Auburn Gresham | 15528 |
| Austin | 15957 |
| Avalon Park | 24454 |
| Avondale | 20039 |
| Belmont Cragin | 15461 |
| Beverly | 39523 |
# GROUPING SETS, can preform multiple group bys without a UNION
%%sql
SELECT community_area_name, community_area_number, AVG(per_capita_income) AS average_income
FROM CENSUS
GROUP BY
GROUPING SETS (
community_area_name,community_area_number);
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_name | community_area_number | average_income |
|---|---|---|
| None | 1 | 23939 |
| None | 2 | 23040 |
| None | 3 | 35787 |
| None | 4 | 37524 |
| None | 5 | 57123 |
| None | 6 | 60058 |
| None | 7 | 71551 |
| None | 8 | 88669 |
| None | 9 | 40959 |
| None | 10 | 32875 |
| None | 11 | 27751 |
| None | 12 | 44164 |
| None | 13 | 26576 |
| None | 14 | 21323 |
| None | 15 | 24336 |
| None | 16 | 27249 |
| None | 17 | 26282 |
| None | 18 | 22014 |
| None | 19 | 15461 |
| None | 20 | 15089 |
| None | 21 | 20039 |
| None | 22 | 31908 |
| None | 23 | 13781 |
| None | 24 | 43198 |
| None | 25 | 15957 |
| None | 26 | 10934 |
| None | 27 | 12961 |
| None | 28 | 44689 |
| None | 29 | 12034 |
| None | 30 | 10402 |
| None | 31 | 16444 |
| None | 32 | 65526 |
| None | 33 | 59077 |
| None | 34 | 16148 |
| None | 35 | 23791 |
| None | 36 | 19252 |
| None | 37 | 10432 |
| None | 38 | 23472 |
| None | 39 | 35911 |
| None | 40 | 13785 |
| None | 41 | 39056 |
| None | 42 | 18672 |
| None | 43 | 19398 |
| None | 44 | 18881 |
| None | 45 | 24454 |
| None | 46 | 16579 |
| None | 47 | 12515 |
| None | 48 | 28887 |
| None | 49 | 17949 |
| None | 50 | 20588 |
| None | 51 | 14685 |
| None | 52 | 17104 |
| None | 53 | 16563 |
| None | 54 | 8201 |
| None | 55 | 22677 |
| None | 56 | 26353 |
| None | 57 | 16134 |
| None | 58 | 13089 |
| None | 59 | 16954 |
| None | 60 | 22694 |
| None | 61 | 12765 |
| None | 62 | 15754 |
| None | 63 | 12171 |
| None | 64 | 25113 |
| None | 65 | 16907 |
| None | 66 | 13231 |
| None | 67 | 11317 |
| None | 68 | 11888 |
| None | 69 | 17285 |
| None | 70 | 23482 |
| None | 71 | 15528 |
| None | 72 | 39523 |
| None | 73 | 19713 |
| None | 74 | 34381 |
| None | 75 | 27149 |
| None | 76 | 25828 |
| None | 77 | 33385 |
| None | None | 28202 |
| Albany Park | None | 21323 |
| Archer Heights | None | 16134 |
| Armour Square | None | 16148 |
| Ashburn | None | 23482 |
| Auburn Gresham | None | 15528 |
| Austin | None | 15957 |
| Avalon Park | None | 24454 |
| Avondale | None | 20039 |
| Belmont Cragin | None | 15461 |
| Beverly | None | 39523 |
| Bridgeport | None | 22694 |
| Brighton Park | None | 13089 |
| Burnside | None | 12515 |
| CHICAGO | None | 28202 |
| Calumet Heights | None | 28887 |
| Chatham | None | 18881 |
| Chicago Lawn | None | 13231 |
| Clearing | None | 25113 |
| Douglas | None | 23791 |
| Dunning | None | 26282 |
| East Garfield Park | None | 12961 |
| East Side | None | 17104 |
| Edgewater | None | 33385 |
| Edison Park | None | 40959 |
| Englewood | None | 11888 |
| Forest Glen | None | 44164 |
| Fuller Park | None | 10432 |
| Gage Park | None | 12171 |
| Garfield Ridge | None | 26353 |
| Grand Boulevard | None | 23472 |
| Greater Grand Crossing | None | 17285 |
| Hegewisch | None | 22677 |
| Hermosa | None | 15089 |
| Humboldt park | None | 13781 |
| Hyde Park | None | 39056 |
| Irving Park | None | 27249 |
| Jefferson Park | None | 27751 |
| Kenwood | None | 35911 |
| Lake View | None | 60058 |
| Lincoln Park | None | 71551 |
| Lincoln Square | None | 37524 |
| Logan Square | None | 31908 |
| Loop | None | 65526 |
| Lower West Side | None | 16444 |
| McKinley Park | None | 16954 |
| Montclaire | None | 22014 |
| Morgan Park | None | 27149 |
| Mount Greenwood | None | 34381 |
| Near North Side | None | 88669 |
| Near South Side | None | 59077 |
| Near West Side | None | 44689 |
| New City | None | 12765 |
| North Center | None | 57123 |
| North Lawndale | None | 12034 |
| North Park | None | 26576 |
| Norwood Park | None | 32875 |
| O'Hare | None | 25828 |
| Oakland | None | 19252 |
| Portage Park | None | 24336 |
| Pullman | None | 20588 |
| Riverdale | None | 8201 |
| Rogers Park | None | 23939 |
| Roseland | None | 17949 |
| South Chicago | None | 16579 |
| South Deering | None | 14685 |
| South Lawndale | None | 10402 |
| South Shore | None | 19398 |
| Uptown | None | 35787 |
| Washington Height | None | 19713 |
| Washington Park | None | 13785 |
| West Elsdon | None | 15754 |
| West Englewood | None | 11317 |
| West Garfield Park | None | 10934 |
| West Lawn | None | 16907 |
| West Pullman | None | 16563 |
| West Ridge | None | 23040 |
| West Town | None | 43198 |
| Woodlawn | None | 18672 |
# Add HAVING clause to filter group by statements
%%sql
SELECT community_area_name, AVG(per_capita_income) AS avg_income
FROM CENSUS
GROUP BY community_area_name
HAVING AVG(per_capita_income) > 20000
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_name | avg_income |
|---|---|
| Albany Park | 21323 |
| Ashburn | 23482 |
| Avalon Park | 24454 |
| Avondale | 20039 |
| Beverly | 39523 |
| Bridgeport | 22694 |
| CHICAGO | 28202 |
| Calumet Heights | 28887 |
| Clearing | 25113 |
| Douglas | 23791 |
# PARTITION BY can let us aggregate without using GROUP BY statement
%%sql
SELECT community_area_name, AVG(per_capita_income) OVER (PARTITION BY per_capita_income) AS average_income
FROM CENSUS
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_name | average_income |
|---|---|
| Riverdale | 8201 |
| South Lawndale | 10402 |
| Fuller Park | 10432 |
| West Garfield Park | 10934 |
| West Englewood | 11317 |
| Englewood | 11888 |
| North Lawndale | 12034 |
| Gage Park | 12171 |
| Burnside | 12515 |
| New City | 12765 |
# Using CASE statement can create new column to categorize
%%sql
SELECT community_area_name, per_capita_income,
CASE
WHEN per_capita_income > 30000 and per_capita_income < 50000 THEN 'Mid Income'
WHEN per_capita_income > 50000 THEN 'High Income'
ELSE 'Low Income'
END AS income_bracket
FROM CENSUS
LIMIT 10;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_name | per_capita_income | income_bracket |
|---|---|---|
| Rogers Park | 23939 | Low Income |
| West Ridge | 23040 | Low Income |
| Uptown | 35787 | Mid Income |
| Lincoln Square | 37524 | Mid Income |
| North Center | 57123 | High Income |
| Lake View | 60058 | High Income |
| Lincoln Park | 71551 | High Income |
| Near North Side | 88669 | High Income |
| Edison Park | 40959 | Mid Income |
| Norwood Park | 32875 | Mid Income |
# Create Table CATS with defined schema
%%sql
CREATE TABLE CATS(
ID INT NOT NULL,
COLOUR VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
PRIMARY KEY (ID)
);
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| id | colour | age |
|---|
%%sql
INSERT INTO CATS(id,colour,age)
VALUES (12,'RED',10),
(13,'BLUE',14),
(24,'ORANGE',57),
(50,'YELLOW',48);
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL 4 rows affected.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| id | colour | age |
|---|---|---|
| 12 | RED | 10 |
| 13 | BLUE | 14 |
| 24 | ORANGE | 57 |
| 50 | YELLOW | 48 |
%%sql
UPDATE CATS
SET colour='CYAN'
WHERE age=10;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL 1 rows affected.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| id | colour | age |
|---|---|---|
| 12 | CYAN | 10 |
| 13 | BLUE | 14 |
| 24 | ORANGE | 57 |
| 50 | YELLOW | 48 |
# ALTER TABLE Commands - ADD COLUMN, DROP COLUMN, RENAME COLUMN, ALTER COLUMN
# ALTER TABLE - ADD COLUMN
%%sql
ALTER TABLE CATS
ADD COLUMN Year INT;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| id | colour | age | YEAR |
|---|---|---|---|
| 12 | CYAN | 10 | None |
| 13 | BLUE | 14 | None |
| 24 | ORANGE | 57 | None |
| 50 | YELLOW | 48 | None |
# ALTER TABLE - RENAME COLUMN
%%sql
ALTER TABLE CATS
RENAME COLUMN YEAR TO
year_born;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| id | colour | age | year_born |
|---|---|---|---|
| 12 | CYAN | 10 | None |
| 13 | BLUE | 14 | None |
| 24 | ORANGE | 57 | None |
| 50 | YELLOW | 48 | None |
#ALTER TABLE - ALTER COLUMN
%%sql
ALTER TABLE CATS
ALTER COLUMN year_born
SET DATA TYPE varchar(10);
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
#ALTER TABLE - DROP COLUMN
%%sql
ALTER TABLE CATS
DROP COLUMN year_born
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| id | colour | age |
|---|---|---|
| 12 | CYAN | 10 |
| 13 | BLUE | 14 |
| 24 | ORANGE | 57 |
| 50 | YELLOW | 48 |
# DROP TABLE can delete the cats table
%%sql
DROP TABLE CATS;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
# SUBQUERIES - subquery in FROM clause gives resultant table to query off of
%%sql
SELECT *
FROM (
SELECT *
FROM CENSUS
WHERE per_capita_income >= 50000)
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_number | community_area_name | percent_of_housing_crowded | percent_households_below_poverty | percent_aged_16__unemployed | percent_aged_25__without_high_school_diploma | percent_aged_under_18_or_over_64 | per_capita_income | hardship_index |
|---|---|---|---|---|---|---|---|---|
| 5 | North Center | 0.3 | 7.5 | 5.2 | 4.5 | 26.2 | 57123 | 6 |
| 6 | Lake View | 1.1 | 11.4 | 4.7 | 2.6 | 17.0 | 60058 | 5 |
| 7 | Lincoln Park | 0.8 | 12.3 | 5.1 | 3.6 | 21.5 | 71551 | 2 |
| 8 | Near North Side | 1.9 | 12.9 | 7.0 | 2.5 | 22.6 | 88669 | 1 |
| 32 | Loop | 1.5 | 14.7 | 5.7 | 3.1 | 13.5 | 65526 | 3 |
| 33 | Near South Side | 1.3 | 13.8 | 4.9 | 7.4 | 21.8 | 59077 | 7 |
# SUBQUERIES - subquery in where clause gives value to compare to off a aggregate function
%%sql
SELECT *
FROM CENSUS
WHERE per_capita_income > (
SELECT avg(per_capita_income)
FROM CENSUS
)
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_number | community_area_name | percent_of_housing_crowded | percent_households_below_poverty | percent_aged_16__unemployed | percent_aged_25__without_high_school_diploma | percent_aged_under_18_or_over_64 | per_capita_income | hardship_index |
|---|---|---|---|---|---|---|---|---|
| 3 | Uptown | 3.8 | 24.0 | 8.9 | 11.8 | 22.2 | 35787 | 20 |
| 4 | Lincoln Square | 3.4 | 10.9 | 8.2 | 13.4 | 25.5 | 37524 | 17 |
| 5 | North Center | 0.3 | 7.5 | 5.2 | 4.5 | 26.2 | 57123 | 6 |
| 6 | Lake View | 1.1 | 11.4 | 4.7 | 2.6 | 17.0 | 60058 | 5 |
| 7 | Lincoln Park | 0.8 | 12.3 | 5.1 | 3.6 | 21.5 | 71551 | 2 |
| 8 | Near North Side | 1.9 | 12.9 | 7.0 | 2.5 | 22.6 | 88669 | 1 |
| 9 | Edison Park | 1.1 | 3.3 | 6.5 | 7.4 | 35.3 | 40959 | 8 |
| 10 | Norwood Park | 2.0 | 5.4 | 9.0 | 11.5 | 39.5 | 32875 | 21 |
| 11 | Jefferson Park | 2.7 | 8.6 | 12.4 | 13.4 | 35.5 | 27751 | 25 |
| 12 | Forest Glen | 1.1 | 7.5 | 6.8 | 4.9 | 40.5 | 44164 | 11 |
# VIEWS can create a tempoary view that can be queried from
%%sql
CREATE VIEW area_uptown AS
SELECT community_area_name, per_capita_income
FROM CENSUS
WHERE community_area_name = 'Uptown';
%%sql
select * FROM area_uptown
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| community_area_name | per_capita_income |
|---|---|
| Uptown | 35787 |
# COMMON TABLE EXPRESSION create a temporary table and a SELECT STATEMENT must be followed immediately after to query off of
%%sql
WITH CENSUS_CTE (area_name, Income) AS (
SELECT community_area_name, per_capita_income
FROM CENSUS
WHERE community_area_name = 'North Center')
select area_name, Income
FROM CENSUS_CTE
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| area_name | income |
|---|---|
| North Center | 57123 |
# TEMP TABLES create a temporary table to query off of. Can Use INSERT INTO statement to put values inside temp table
%%sql
CREATE TABLE #temp_census (
ID int,
Jobtitle varchar (50),
Salary int
)
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM #temp_census
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
| id | jobtitle | salary |
|---|
# STORED PROCEDURES are like functions that can be called
%%sql
CREATE PROCEDURE RETRIEVE_ALL
LANGUAGE SQL
READS SQL DATA
DYNAMIC RESULT SETS 1
BEGIN
DECLARE C1 CURSOR
WITH RETURN FOR
SELECT * FROM CENSUS;
OPEN C1;
END
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL (ibm_db_dbi.ProgrammingError) ibm_db_dbi::ProgrammingError: Statement Execute Failed: [IBM][CLI Driver][DB2/LINUXX8664] SQL0454N The signature provided in the definition for routine "GMV60736.RETRIEVE_ALL" matches the signature of some other routine. LINE NUMBER=10. SQLSTATE=42723\r SQLCODE=-454 [SQL: CREATE PROCEDURE RETRIEVE_ALL LANGUAGE SQL READS SQL DATA DYNAMIC RESULT SETS 1 BEGIN DECLARE C1 CURSOR WITH RETURN FOR SELECT * FROM CENSUS; OPEN C1; END] (Background on this error at: http://sqlalche.me/e/f405)
%%sql
CALL RETRIEVE_ALL
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done. (ibm_db_dbi.ProgrammingError) ibm_db_dbi::ProgrammingError: The last call to execute did not produce any result set. (Background on this error at: http://sqlalche.me/e/f405)
# JOINS - 4 Major Joins. Uses Primary Key from one table and a foreign key from another table to join.
# (INNER) JOIN
# LEFT (OUTER) JOIN
# RIGHT (OUTER) JOIN
# FULL (OUTER) JOIN
# UNIONS - adds rows from one table to another using UNION (distinct) or UNION ALL statement (all)